<?php

/**
 * @author nguyendu
 * @copyright 2011
 * @package :File
 * @name :Abstract class
 */
 abstract class File_Abstract
 {
    /**
	 * Get name file/directory
	 * Lấy tên file hoặc đường dẫn
	 * @return	string
	 */
    abstract protected function getName();
    
   	/**
	 * Get file/directory path
	 * Lấy đường dẫn của file và thư mục
	 * @return	string
	 */
    abstract protected function getPath();
    
    /**
	 * Build path for web format (URI)
	 *
	 * @return	string
	 */
    abstract protected function buildPath();
    
    
    /**
	 * Get parent directory for this path
	 * Lấy thư mục cha của đường dẫn hiện thư mục hiện tại
	 * @return	string
	 */
    abstract protected function getParent();
    
    
    /**
	 * Get file or directoty absolute path
	 * Lấy đường dẫn tuyệt đối hoặc thư mục 
	 * @return	string
	 */
    abstract protected function getAbsolutePath();
    
    /**
	 * Get file or directoty absolute path
	 * Lấy đường dẫn tuyệt đối hoặc thư mục  
	 * @return	string
	 */
    abstract protected function getDirectoryAbsolutePath();
    
    /**
	 * Check is file or not
	 * Kiểm tra có phải là file hay không
	 * @return	boolean
	 */
    abstract protected function isFile();
    
    /**
	 * Check is directory or not
	 * Kiểm tra có phải là thư mục hay không
	 * @return	boolean
	 */
    abstract protected function isDirectory();
    
    /**
	 * Check the absolute path for this current file or directory
	 * Kiểm tra có phải là đường dẫn tuyệt đối của thư mục hoặc file hiện tại
	 * @return	boolean
	 */
    abstract protected function isAbsolute();
    
    /**
	 * Check the file or directory can writeable
	 * Kiểm tra xem một file hoặc thư mục có thể ghi được không
	 * @return	boolean
	 */
    abstract protected function isWriteable();
     /**
	 * Check the file or directory can readable
	 * Kiểm tra xem một file hoặc thư mục có thể đọc được không
	 * @return	string
	 */
    abstract protected function isReadable();
    /**
     * Returns the file/directory length
     * Trả về độ dài của file hoặc thư mục
     * @return int 
    */
    abstract protected function length();
    /**
     * Returns is true or false if it do not exists
     * Kiểm tra xem một file hoặc thư mục có tồn tại hay không
     * @return boolean
    */
    abstract protected function isExists();
    /**
     * Rename this file/directory to  file passed with parameter
     * This method do not only rename,but move current file to
     * file defined in parameter
     * Đổi tên file hoặc thư mục
     * @param FileExtend $destination
    */
    abstract protected function renameTo($destination);
    /**
     * Delete this file or directory case it exists
     * Xóa một file hoặc thư mục trong trường hợp nó tồn tại
     * @return boolean
    */
    abstract protected function delete();
    /**
     * Get the file or directory last modifier
     * Lấy thông tin về lần sửa cuối cùng của file
     * @return string-date format on standard [ss:mm:hh dd/MM/yyyyy]
    */
    abstract protected function lastModifier();
    /**
     * Get information the file or directory
     * Lấy thông tin về file hoặc thư mục
     * @return array
    */
    abstract protected function getInformation();
    /**
     * Get extension of the file
     * Lấy phần đuôi mở rộng của file
     * @return string
    */
    abstract protected function getExtension();
    /**
     * Get the usable in disk
     * @return  int
    */
    abstract protected function getUseableSpace();
    /**
     * Get the free space in disk
     * Lấy dung lượng đĩa trống của ổ cứng
     * @return int
    */
    abstract protected function getFreeSpace();
    /**
     * Get the total space in disk
     * Lấy tổng dung lượng của ổ cứng
     * @return int
    */
    abstract protected function getTotalSpace();
    /**
     * Get total space in directory
     * lấy tổng dung lượng của thư mục
     * @return int
    */
    abstract protected function getDirectoryTotalSpace();
    abstract protected function getSizeOfDirectory();
 }
?>